| step | instruction | memory | CPU0-cache | CPU1-cache | CPU2-cache | CPU3-cache | NOTAS | |||||||||||||||||||||||
| a0 | a1 | a2 | a3 | l0 | l1 | l0 | l1 | l0 | l1 | l0 | l1 | |||||||||||||||||||
| value | value | value | value | state | dir | value | state | dir | value | state | dir | value | state | dir | value | state | dir | value | state | dir | value | state | dir | value | state | dir | value | |||
| 0 | - | 100 | 200 | 300 | 400 | I | I | I | I | I | I | I | I | |||||||||||||||||
| 1 | 1: read a2 | 100 | 200 | 300 | 400 | I | I | S | a2 | 300 | I | I | I | I | I | PrRd/BusRd | ||||||||||||||
| 2 | 3: read a2 | 100 | 200 | 300 | 400 | I | I | S | a2 | 300 | I | I | I | S | a2 | 300 | I | PrRd/BusRd, Aunque lo tiene en otra cache, lo vuelve a leer de memoria | ||||||||||||
| 3 | 2: write a2=301 | 100 | 200 | 300 | 400 | I | I | I | a2 | 300 | I | M | a2 | 301 | I | I | a2 | 300 | I | Hago un PrWr/BusRdX que invalida el resto de copias | ||||||||||
| 4 | 0: read a2 | 100 | 200 | 301 | 400 | S | a2 | 301 | I | I | a2 | 300 | I | S | a2 | 301 | I | I | a2 | 300 | I | Cuando leo un valor de memoria sucio, la caché que lo tiene actualizado hace un Flush | ||||||||
| 5 | 0: write a2=320 | 100 | 200 | 301 | 400 | M | a2 | 320 | I | I | a2 | 300 | I | I | a2 | 301 | I | I | a2 | 300 | I | PrWr/BusRdX | ||||||||
| 6 | 1:write a2=330 | 100 | 200 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | I | a2 | 300 | I | PrWr/BusRdX, la actualización de memoria se hace para nada PORQUE justo después de actualizar la memoria queda sucia al sobreescribir el valor en la caché M | ||||||||
| 7 | 3: read a1 | 100 | 200 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | I | a2 | 300 | S | a1 | 200 | |||||||
| 8 | 3: read a0 | 100 | 200 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | S | a0 | 100 | S | a1 | 200 | |||||||
| 9 | 3: write a1 = 201 | 100 | 200 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | S | a0 | 100 | M | a1 | 201 | |||||||
| 10 | 3: write a0 = 101 | 100 | 200 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | M | a0 | 101 | M | a1 | 201 | El procesador 3 tiene la cache llena | ||||||
| 11 | 3: read a3 | 100 | 201 | 320 | 400 | M | a2 | 320 | I | M | a2 | 330 | I | I | a2 | 301 | I | M | a0 | 101 | S | a3 | 400 | Replace/Flush & PrRe/BusRd, Si estuviera en estado S no haría el flush | ||||||
Descargar en ODT

